cpp14
数字分隔符
C++14起,可以使用单引号作为分隔符。
auto a = 1'234'567; //1234567(整数)
auto b = 1'234'567s; //1234567 秒
函数返回类型推导
C++11的 auto 可以从lambda的return语句推导返回值类型,但不能自动推导函数返回类型,只能充当占位符的作用,C++14的 auto 可以推导函数返回类型。
template<typename T>
auto use_11(const T& a) -> int {
return a.size();
}
template<typename T>
auto use_14(const T& a) {
return a.size();
}
lambda完善
泛型lambda
auto get_size = [](auto& m){ return m.size(); }
移动捕获
int* ptr = nullptr;
auto a = [p = move(ptr)]{ /*...*/ }
constexpr函数中的局部变量
constexpr int min(std::initializer_list<int> xs) {
int low = std::numeric_limits<int>::max();
for(int x : xs) {
if (x < low) low = x;
}
return low;
}
constexpr int m = min({1,3,2,4});//给定参量表达式作为参数,min即可在编译时求值